package com.dao;

import com.entity.appCategory;
import com.entity.appInfo;
import com.entity.appVersion;
import com.entity.devUser;
import org.apache.ibatis.annotations.Param;

import java.util.List;

public interface developerDao {
    /**
     * 开发者登录，根据用户名和密码查询用户信息
     */
    devUser devLogin(@Param("devCode") String devCode, @Param("devPassword") String devPassword);

    /**
     * 开发者注册
     */
    int devRegister(devUser devUser);

    /**
     * 开发者注册时，其账号不能重复，所以要查询数据库中是否有开发者输入的账号
     */
    int judgeDevCode(@Param("devCode") String devCode);

    /**
     * 分页展示app内容，并可以根据条件查询
     */
    List<appInfo> devShow(@Param("softwareName") String softwareName, @Param("status") String status, @Param("flatForm") String flatForm,
                          @Param("categoryLevel1") Integer categoryLevel1, @Param("categoryLevel2") Integer categoryLevel2, @Param("categoryLevel3") Integer categoryLevel3);

    /**
     * 根据用户输入的一二级分类，查找二三级分类
     */
    List<appCategory> findSort(@Param("id") Integer id);

    /**
     * 新增app信息
     */
    int addAppInfor(appInfo appInfo);

    /**
     * 验证APKName不能重复
     */
    int judgeAPKName(@Param("APKName")String APKName);

    /**
     * 修改app，先根据id获取app的内容
     */
    appInfo modifyFindApp(@Param("id")Integer id);

    /**
     * 根据app_info表的flatformId查找app所属平台
     */
    List<appInfo> findFlatForm(@Param("flatformId")Integer flatformId);

    /**
     * 根据app_info表的categoryLevel3查找其所在父类的所有分类
     */
    List<appCategory> findCategoryName3(@Param("id")Integer id);

    /**
     * 修改app信息
     */
    int appModify(appInfo appInfo);

    /**
     * 查看历史版本信息
     */
    List<appVersion> appVersionShow(@Param("appId") Integer appId);

    /**
     * 新增版本信息
     */
    int addAppVersion(appVersion appVersion);

    /**
     * 如果新增版本信息成功，则修改app_Info表的最新版本号id
     */
    int modifyVersionId(@Param("appId")Integer appId);

    /**
     * 修改最新版本信息，首先获取最新版本信息
     */
    appVersion findAppVersion(@Param("appId")Integer appId);

    /**
     * 修改最新版本信息
     */
    int modifyAppVersion(appVersion appVersion);

    /**
     * 根据id，删除app基本信息以及所有版本信息
     */
    int deleteApp(@Param("id")Integer id);

    /**
     * app上架
     */
    int putOnApp(@Param("id")Integer id);

    /**
     * app下架
     */
    int offOnApp(@Param("id")Integer id);
}
